﻿#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H

#include "TABLEDEFINE.h"
#include "db_cfg_g_def.h"
#include "mytreewidget.h"
#include "mytablewidget.h"
#include "DbCfgFun.h"
#include "PropertyView.h"
#include "mytabledata.h"

#include <QtGui>
#include "GetColumnInfo.h"

#include <QList>
#include <QAction>
#include <QMenu> 
#include <QLabel>
#include <QTimer>
#include <QComboBox>
#include <QTabWidget>

#define  ADD_MENU						1                  // 增加
#define  YXTRANS_MENU					2                  // 遥信转发表
#define  YCTRANS_MENU					3                  // 遥测转发表
#define  YKTRANS_MENU					4                  // 遥控转发表
#define  YMTRANS_MENU					5                  // 遥脉转发表
#define  DEVSTATETRANS_MENU				6                  // 设备状态转发表
#define  CREATETRANSTXT_MENU			7                  // 生成转发对照表
#define  EXPORT_PARAMDB_MENU			9                  // 导出终端参数库


#define  TRANSCOPY_MENU					13                 // 转发拷贝
#define  PRIMA_ADD_MENU					101                // 增加
#define  PRIMA_COPE_MENU				102				   // 拷贝
#define  CREATE_61850_MAPFILE_MENU		103				   // 拷贝
//#define  ADD_61850_DEVICE               104                //ccg61850模型配置右击添加按键



class DbCfgTableView;
class TableTreeWdgt;
QT_BEGIN_NAMESPACE
class QTreeWidget;
class QAction;
class QMenu;
class QMdiArea;
class QMdiSubWindow;
class QSignalMapper;
class QListWidget;
class QTextEdit;
class QTreeWidgetItem;
QT_END_NAMESPACE

class MyMainWindow : public QMainWindow {
    Q_OBJECT
public:
    MyMainWindow(QWidget *parent = 0);
	~MyMainWindow();

public:
	void ShowTableView(int AppType, int TableId, int ParentId, QTreeWidgetItem *pCurTreeItem,int PtlParamType);

/* 函数：	AddDevice
	用途：	添加设备
	输入：		
	返回：	*/
	void	AddDevice(unsigned int ParentId);
	void	AddSetParaIndex(unsigned int ParentId);
	/*  函数：  setupMenuBar()
	用途：  设置右键菜单
	返回：	*/
	void	setupPopMenuBar();

/*  函数：  AddCommDevModel()
	用途：  添加普通设备模板
	返回：	*/
	void	AddCommDevModel(); 
	int		CheckNeedSaveOpe();
	void	SetEditState();
protected:
	void	closeEvent(QCloseEvent *event);

private slots:
	void	UserLogin();
	void	FreshTree();
	void	OnAddNewRecord();
	//void    OnUpdate61850ICDFile();
	void	OnExportParamDB();
	void	OnAddTransInfo();	 //添加转发信息
	void	OnMakeTransInfo();   //生成转发对照表
	void	DeleteData();
	void	SaveData();
	void	RefreshData();
	void	ShowTreeDock();
	void	ShowTextDock();
	void	ShowPropertyDock();
	void	OnShowTableData(QTreeWidgetItem *pCurTreeItem);
	
		/*  函数：  updateMenu()
		用途：  刷新右键菜单
		返回：	*/
		void	upDateMenu(QPoint point);   

		void	SelectRow_slot(int RowNum);
		void	SelectItem_slot(int ItemRowNum, int ItemColNum, int ItemColIndex);
		void	NeedSave_Slot(bool bSave);

		void	OnHeadPage();
		void	OnPrevPage();
		void	OnNextPage();
		void	OnTailPage();
		void	OnMoveToPage(int ItemIndex);
		void	SetPageComboBoxNum(int PageNum);
		void	SetPageComboBoxCurNo(int PageNo);
		void	SetPageActShowState(int CurPageNo, int PageCount);
		void	OnCreateXmlFile();
		void    OnGenerateTotalSort();

signals:
		void AddNewRecordSignal();
		void SaveDataSignal();
		void UpDateTreeItem_Signal(quint32 AppType, quint32 TableId, quint32 ParentId, quint32 RecordId, int RowProp);
	    void  UpTreeItem_Signal(QTreeWidgetItem	*pCurItem);
		//刷新数据显示信号
		void RefreshDataShow_Signal();
		void ChangePage_Signal(int ActType, int PageNo);

private:
	void InitPoint();
	void createActions();
	void createMenus();
	void createToolBars();
	void createStatusBar();
	void createDockWindows();
	void createCentralWidget();
	void ShowDockWindow(QDockWidget *pDockWidget);
	void ConnectFunction();

private:
	
	QTabWidget		*m_pCentralTab;
	MyTableWidget	*m_pCentralView;
	MyTreeWidget	*m_pTreeWdgt;
	QMenu           *m_pSysMenu;
	QMenu           *m_pOperMenu;
	QMenu           *m_pViewMenu;
	QMenu           *m_pAboutMenu;
	QToolBar        *m_pOperTlBar;
	//QAction         *m_pUserAct;
	//QAction         *m_pDSNMgrAct;
	QAction         *m_pfreshTreeAct;
	QAction         *m_pExitAct;
	QAction         *m_pAddAct;
	QAction         *m_pDelAct;
	QAction			*m_pSetColAct;
	QAction         *m_pSaveModelAct;
	QAction			*m_pSaveModelFileAct;
	QAction         *m_pSaveDataAct;
	//QAction			*m_pOnLineUpdateAct;
	QAction         *m_pRefreshAct;
	QAction         *m_pTreeAct;
	QAction         *m_pOperInfoAct;
	QAction         *m_pPropertyAct;
	QAction         *m_pAboutAct;	
	//	QAction			*m_pYcTableAct;
	//QAction			*m_pInputSCD;

	QAction			*m_pPrePageAct;
	QAction			*m_pNextPageAct;
	QAction			*m_pHeadPageAct;
	QAction			*m_pTailPageAct;
	QComboBox		m_PageNoComBox;

	QDockWidget     *m_pLeftTreeDock;
	QDockWidget     *m_pBottomTextDock;
	QDockWidget		*m_pRightDock;
	TreeItemData	m_CurTreeItemData;
	QMenu           *m_PopMenu;                //右键菜单
	QList<QAction *> m_PopAction_list;               //61850Modle
	QLabel			m_CurTableName;
	QLabel			m_CurDsnInfoStr;
	//QTimer			*m_Timer1;
	QTabWidget		*m_pTabWdgt;

	MyTreeWidget	*m_pTree;
//	QMenu           *m_PopMenuLst;           //右键菜单

	QListWidget		*m_pTextEdit;
	PropertyView	*m_pPropView;
	MyTableData		m_TableData;
	QTreeWidgetItem *m_pLastSeltTreeItem;
	GetColumnInfo	m_ColInfo;
	QString m_CurTreeItemName ;              //ccg增加一个全局变量，记录点击树item显示的名称，给右击61850设备用
};

#endif // MYMAINWINDOW_H
